//
//  HMMainViewController.swift
//  Swift3.0_Micro-blog-Sina
//
//  Created by Apple on 16/10/22.
//  Copyright © 2016年 Apple. All rights reserved.
//

import UIKit

class HMMainViewController: UITabBarController {
   
    override func viewDidLoad() {
        super.viewDidLoad()

        // 实例化 tabbar
         let tabBar = HMTabBar()
        //tabBar.composeButton.addTarget(<#T##target: Any?##Any?#>, action: <#T##Selector#>, for: <#T##UIControlEvents#>)
        // 02 闭包的实例化
        tabBar.closure = {
            // 04 接收回调
            print("在外面监听撰写按钮点击")
        }
        // 设置代理
//        tabBar.hmDelegate = self
        // 通过 kvc 给计算型属性赋值
        setValue(tabBar, forKey: "tabBar")
        // 添加子控制器
        addChildViewController(vc: HMHomeViewController(), title: "首页", imgName: "tabbar_home")
        addChildViewController(vc: HMMessageViewController(), title: "消息", imgName: "tabbar_message_center")
        addChildViewController(vc: HMDiscoverViewController(), title: "发现", imgName: "tabbar_discover")
        addChildViewController(vc: HMProfileViewController(), title: "我", imgName: "tabbar_profile")
    }
    
    
    /// 添加子控制器方法
    ///
    /// - parameter vc:      子控制器
    /// - parameter title:   名字
    /// - parameter imgName: 图片名字
    private func addChildViewController(vc: UIViewController, title: String, imgName: String){
        // 设置 title
        vc.title = title
//                vc.navigationItem.title = "首页"
//                vc.tabBarItem.title = "首页"
        // 设置文字颜色
        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: HMTHEMECOLOR], for: UIControlState.selected)
        // 设置图片
        vc.tabBarItem.image = UIImage(named: imgName)
        // 选中的图片(alwaysOriginal 原生渲染方式)
        vc.tabBarItem.selectedImage = UIImage(named: "\(imgName)_selected")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
        // 添加
        let vcNav = HMNavigationController(rootViewController: vc)
        addChildViewController(vcNav)
    }

}
// extension 相当于 OC 中的分类 给类添加方法 (也可以用于 代码分块)
// 注意: 里面不能有存储型属性 或者 指定构造函数 只能使用便利构造函数
// MARK: - HMTabBarDelegate
//extension HMMainViewController: HMTabBarDelegate {
//    func composeButtonClickOfTabBar() {
//        print("在外面监听撰写按钮点击")
//    }
//}
